'use strict'
const path = require('path')

function resolve (dir) {
  return path.join(__dirname, dir)
}

const port = 9527 // dev port

module.exports = {
  publicPath: '/',
  outputDir: 'dist',
  assetsDir: 'static',
  lintOnSave: false,
  productionSourceMap: false,
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: false
    },
    proxy: {
      // '/api': {
      //   // target: 'http://localhost:8080', // 目标服务器地址
      //   target: 'http://localhost:8080', // 目标服务器地址
      //   changeOrigin: true, // 是否改变源地址
      //   pathRewrite: {
      //     '^/api': '' // 重写路径
      //   }
      // }
      [process.env.VUE_APP_BASE_API]: {
        target: '/',
        changeOrigin: true,
        secure: false,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    }
  },
  configureWebpack: {
    resolve: {
      alias: {
        '@': resolve('src')
      }
    },
  },
  css: {
    // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中、生产环境下默认 true，开发环境下默认 false
    extract: false,
    // 是否开启 css 的 source map 调试，默认 false
    sourceMap: false,
    // 配置css的loader选项：css-loader、postcss-loader、less-loader、sass-loader，stylus-loader，默认 {}
    loaderOptions: {},
  },
  chainWebpack: config => {
    config.plugins.delete('preload') // TODO: need test
    config.plugins.delete('prefetch') // TODO: need test
    config.resolve.symlinks(true)   //lp----  解决不能热更新
    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()

    // set preserveWhitespace
    config.module
      .rule('vue')
      .use('vue-loader')
      .loader('vue-loader')
      .tap(options => {
        options.compilerOptions.preserveWhitespace = true
        return options
      })
      .end()

    // config.when(process.env.NODE_ENV === 'development',
    //   config => config.devtool('cheap-source-map')
    // )

    // config.when(process.env.NODE_ENV !== 'development', config => {
    //     config
    //       .plugin('ScriptExtHtmlWebpackPlugin')
    //       .after('html')
    //       .use('script-ext-html-webpack-plugin', [{
    //         // `runtime` must same as runtimeChunk name. default is `runtime`
    //         inline: /runtime\..*\.js$/
    //       }])
    //       .end()
    //     config
    //       .optimization.splitChunks({
    //       chunks: 'all',
    //       cacheGroups: {
    //         libs: {
    //           name: 'chunk-libs',
    //           test: /[\\/]node_modules[\\/]/,
    //           priority: 10,
    //           chunks: 'initial' // only package third parties that are initially dependent
    //         },
    //         elementUI: {
    //           name: 'chunk-elementUI', // split elementUI into a single package
    //           priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
    //           test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
    //         },
    //         commons: {
    //           name: 'chunk-commons',
    //           test: resolve('src/components'), // can customize your rules
    //           minChunks: 3, //  minimum common number
    //           priority: 5,
    //           reuseExistingChunk: true
    //         }
    //       }
    //     })
    //     config.optimization.runtimeChunk('single')
    //   })

    config.plugin('html').tap(args => {
      args[0].title = '群兴寿服'
      return args
    })

  },
}
